"""
文件读取
- 文件打开：open(name,mode,encoding)
- 文件读取：read()
- 读取文件的全部行：文件对象.readlines()
- 一次读取一行：文件对象.readline()
- with open() as f  会自动关闭文件
"""

# 文件打开：open(name,mode,encoding)
# name:打开文件的名字
# mode设置打开文件的模式（只读 r【默认模式】, 写入 w【如果文件存在并且有内容，会被删除从头开始编辑，文件不存在则新建】,
#  追加 a【文件存在切已有内容，会新增到已有内容之后，文件不存在则新建】 等）
# encoding:编码格式（推荐UTF-8)
f = open("D:/python code/test.txt","r",encoding="UTF-8")
print(type(f))

# 读取文件：文件对象.read(num)
# num表示要从文件中读取数据的长度（单位：字节），如果没有num，则表示读取所有数据
# 如果在一个程序中多次调用read，那么下一个read会在上一个read的结尾处开始读取
result = f.read(10)
print(f"读取10个字节的结果{result}")
print("===============")
result2 = f.read()
print(f"读取全部内容的结果{result2}")

# 读取文件的全部行：文件对象.readlines(),封装到列表中，会读取到换行符
print(f"读取文件全部行的结果是：{f.readlines()}")

# 一次读取一行：文件对象.readline()
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(f"第一行数据是：{line1}")
print(f"第二行数据是：{line2}")
print(f"第三行数据是：{line3}")

# 循环读取文件行
for line in f:
    print(line)

# 文件的关闭
f.close()

# with open 语法操作文件
# 这种写法文件使用之后会自动关闭
with open("D:/python code/test.txt","r",encoding="UTF-8") as f:
    for line in f:
        print(f"文件的每一行是：{line}")

# 小练习：单词计数
count = 0
with open("D:/python code/word.txt","r",encoding="UTF-8") as f:
    for line in f:
        my_list=line.strip("\n").split(" ")
        print(f"每一行列表：{my_list}")
        for word in my_list:
            if word == "you":
                count+=1
print(f"文件中一共出现了：{count}个单词you")
